package student.aistar.day16;

/**
 * java.lang.Class<T> (一)
 */
public class ClassDemo {
    public static void main(String[] args) {
        //获取类的class实例的方式

        //每个类再JVM中的class实例永远只有一个 - 无论构建了多少个对象
        //1. 类名.class
        Class<?> c1 = Point.class;
        Class<?> c2 = Point.class;
        System.out.println(c1);//class student.aistar.day16.Point
        System.out.println(c1 == c2);//true

        Class<?> c3 = String.class;
        System.out.println(c3);//class java.lang.String

        //2.对象.getClass();
        Point p1 = new Point();
        Point p2 = new Point();

        Class<?> c4 = p1.getClass();//对象的类型
        Class<?> c5 = p2.getClass();

        //类型判断 对象 instanceof 类
        System.out.println(c4);//class student.aistar.day16.Point
        System.out.println(c4 == c5);//true


        //3. Class类中提供的static Class<?> forName("类的全限定名");
        //TODO... 为何要使用CLass.forName();

        try {
            Class<?> c6 = Class.forName("class student.aistar.day16.Point");
            System.out.println("c6: " + c6);//class student.aistar.day16.Point
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        //4.基本类型.class
        Class<?> c7 = int.class;
        System.out.println(c7);
    }
}
